import axios from "axios";
import {getToken, removeToken} from "@/utils/token";
import router from "@/router";

const http = axios.create({
  baseURL: "http://geek.itheima.net/v1_0",
  timeout: 5000,
});

http.interceptors.request.use(
  (config) => {
      // 操作config注入token数据
      // 1.获取到token
      // 2.按照前后端的格式要求做token拼接
      const token=getToken();
      if (token){
          config.headers.Authorization = `Bearer ${token}`
      }
    return config;
  },
  (error) => {
    return Promise.reject(error);
  }
);

http.interceptors.response.use(
  (response) => {
    return response.data;
  },
  (error) => {
      // 超出2XX范围的状态码都会触发该函数
      // 对响应错误做出回应
      // 监控401 token失败
      console.dir(error)
      // 如果是token失效，就会在error.response.status返回一个值401
      if (error.response.status===401)
      {
          // token不争取，就清除localStorage中的token值
          removeToken();
          // 跳转到登录页
          router.navigate('/login').then(()=>{window.location.reload();})
          // 要刷新一下页面，放置浏览器出现报警信息

      }
    return Promise.reject(error);
  }
);

export {http}
